#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a,b;
bool go3_0(){
if(a<75) return 0;
else if(a==75){
if(b>=0&&b<=69){
printf("3:0\n");
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
return 1;
}
else return 0;
}
else{
if(b>=a-52&&b<=a-6){
printf("3:0\n");
printf("%d:%d ",a-50,a-52);
b-=(a-52);
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
return 1;
}
else return 0;
}
}
bool go3_1(){
if(a<75) return 0;
else if(a>=75&&a<=98){
if(b>=25&&b<=a+19){
printf("3:1\n");
if(b<=94){
printf("%d:25 ",a-75);
b-=25;
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
}
else{
int x=b-25-23-23;
printf("%d:25 ",a-25-25-x-2);
printf("25:23 25:23 ");
printf("%d:%d ",x+2,x);
}
return 1;
}
else return 0;
}
else{
if(b>=a-73&&b<=a+19){
printf("3:1\n");
if(b>=a-73&&b<=a-4){
int x=a-75;
printf("%d:%d ",x,x+2);
b-=(x+2);
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
}
else{
int y=b-25-23-23+2;
printf("%d:25 ",a-50-y);
printf("%d:%d ",y,y-2);
printf("25:23 25:23 ");
}
return 1;
}
else return 0;
}
}
bool go3_2(){
if(a<65) return 0;
else if(a>=65&&a<=111){
if(b>=50&&b<=a+44){
printf("3:2\n");
if(b<=109){
a-=65;
b-=50;
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("%d:25 ",food);
}
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
printf("15:%d ",b);
}
else{
int x=b-50-46;
a-=(x+2+50);
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("%d:25 ",food);
}
printf("25:23 25:23 ");
printf("%d:%d ",x+2,x);
}
return 1;
}
return 0;
}
else{
if(b>=a-61&&b<=a+44){
printf("3:2\n");
if(b>=a-61&&b<=a-2){
int x=a-23-25-25-15;
printf("%d:%d ",x,x+2);
printf("23:25 ");
b-=(x+2+25);
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("25:%d ",food);
}
printf("15:%d ",b);
}
else{
int y=b-50-36+2;
a-=(y+40);
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("%d:25 ",food);
}
printf("%d:%d ",y,y-2);
printf("25:23 15:13 ");
}
return 1;
}
else return 0;
}
}
bool go2_3(){
swap(a,b);
if(a<65) return 0;
else if(a>=65&&a<=111){
if(b>=50&&b<=a+44){
printf("2:3\n");
if(b<=109){
a-=65;
b-=50;
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("25:%d ",food);
}
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
printf("%d:15 ",b);
}
else{
int x=b-50-46;
a-=(x+2+50);
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("25:%d ",food);
}
printf("23:25 23:25 ");
printf("%d:%d ",x,x+2);
}
return 1;
}
return 0;
}
else{
if(b>=a-61&&b<=a+44){
printf("2:3\n");
if(b>=a-61&&b<=a-2){
int x=a-23-25-25-15;
printf("%d:%d ",x+2,x);
printf("25:23 ");
b-=(x+2+25);
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
printf("%d:15 ",b);
}
else{
int y=b-50-36+2;
a-=(y+40);
for(int i=0;i<2;i++){
int food=min(23,a);
a-=food;
printf("25:%d ",food);
}
printf("%d:%d ",y-2,y);
printf("23:25 13:15 ");
}
return 1;
}
else return 0;
}
}
bool go1_3(){
swap(a,b);
if(a<75) return 0;
else if(a>=75&&a<=98){
if(b>=25&&b<=a+19){
printf("1:3\n");
if(b<=94){
printf("25:%d ",a-75);
b-=25;
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
}
else{
int x=b-25-23-23;
printf("25:%d ",a-25-25-x-2);
printf("23:25 23:25 ");
printf("%d:%d ",x,x+2);
}
return 1;
}
else return 0;
}
else{
if(b>=a-73&&b<=a+19){
printf("1:3\n");
if(b>=a-73&&b<=a-4){
int x=a-75;
printf("%d:%d ",x+2,x);
b-=(x+2);
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
}
else{
int y=b-25-23-23+2;
printf("25:%d ",a-50-y);
printf("%d:%d ",y-2,y);
printf("23:25 23:25 ");
}
return 1;
}
else return 0;
}
}
bool go0_3(){
swap(a,b);
if(a<75) return 0;
else if(a==75){
if(b>=0&&b<=69){
printf("0:3\n");
for(int i=0;i<3;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
return 1;
}
else return 0;
}
else{
if(b>=a-52&&b<=a-6){
printf("0:3\n");
printf("%d:%d ",a-52,a-50);
b-=(a-52);
for(int i=0;i<2;i++){
int food=min(23,b);
b-=food;
printf("%d:25 ",food);
}
return 1;
}
else return 0;
}
}
int main(){
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
int T;
cin>>T;
while(T--){
scanf("%d %d",&a,&b);
int aa=a,bb=b;
if(go3_0()) {printf("\n");continue;}
a=aa;b=bb;
if(go3_1()) {printf("\n");continue;}
a=aa;b=bb;
if(go3_2()) {printf("\n");continue;}
a=aa;b=bb;
if(go2_3()) {printf("\n");continue;}
a=aa;b=bb;
if(go1_3()) {printf("\n");continue;}
a=aa;b=bb;
if(go0_3()) {printf("\n");continue;}
a=aa;b=bb;
printf("Impossible\n");
}
return 0;
}
49A - Sleuth | 1541A - Pretty Permutations |
1632C - Strange Test | 673A - Bear and Game |
276A - Lunch Rush | 1205A - Almost Equal |
1020B - Badge | 1353A - Most Unstable Array |
770A - New Password | 1646B - Quality vs Quantity |
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |
1569C - Jury Meeting | 108A - Palindromic Times |
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |